﻿using System;
using System.Collections.Generic;
using System.Text;

namespace PCR.Base
{
    /// <summary>
    /// Whole logic business interface, all the logical work are all done here
    /// </summary>
    public interface IRoot
    {
        /// <summary>
        /// Get the log interface
        /// </summary>
        ILogManager LogManager { get; }
        
        /// <summary>
        /// Get the privilege manager interface
        /// </summary>
        IPrivilegeManager PrivilegeManager { get; }

        /// <summary>
        /// Get the configuration manager interface
        /// </summary>
        IConfigManager ConfigManager { get; }

        /// <summary>
        /// Get the standard curve manager interface
        /// </summary>
        IStdCurveManager StdCurveManager { get; }

        /// <summary>
        /// Get the virus type manager interface
        /// </summary>
        IVirusTypeManager VirusTypeManager { get; }

        /// <summary>
        /// Get the patient manager interface
        /// </summary>
        IPatientManager PatientManager { get; }

        /// <summary>
        /// Get the IOManager interface
        /// </summary>
        IIOManager IOManager { get; }  
        
        /// <summary>
        /// Get the calculator interface
        /// </summary>
        ICalculator Calculator { get; }
                
        /// <summary>
        /// Create the specified object by object type
        /// </summary>
        object CreateObject(ObjectType objType);
    }
}
